『はじめての OS コードリーディング』
https://images-na.ssl-images-amazon.com/images/I/514LkEGdXeL._SX356_BO1,204,203,200_.jpg
『はじめてのOSコードリーディング ~UNIX V6で学ぶカーネルのしくみ』の読書メモ
第 1 章 - UNIX V6 とは
UNIX V6 のカーネルが最低限提供する機能
実行プログラム(プロセス)の管理
メモリ管理
ファイルシステム
ファイルと周辺デバイスでの共通 I/O
割り込み
端末処理サポート
PDP-11 の解説
第 2 章 - プロセス
プロセスは実行中のプログラムを管理する概念
一意な ID を持つ
メモリ領域を割り当てられる
仮想アドレス空間が割り当てられる
プログラムが共通の場合仮想アドレス空間を共有することもある
並行処理できる  
ユーザモードとカーネルモードで仮想アドレスに割り当てられるメモリ領域が異なる
それぞれのプロセスをユーザプロセス、カーネルプロセスと呼ぶ
ユーザプロセスからカーネルの機能を利用するためにはシステムコールを発行する必要がある
スワッピング
プロセスに割り当てられるメモリ
テキストセグメント
プログラムや定数が格納される
読み取り専用
プログラムが複数プロセスで実行される場合プロセス間で共有される
データセグメント
プログラムが利用する変数などのデータが格納される
書き込み可
プロセス間で共有されない
PPDA(Per Process Data Area)
user 構造体とカーネルスタック領域からなる
プロセス制御用
ユーザ空間からはアクセスできない
データ領域
グローバル変数や bss セグメントなどの静的な領域
プロセスが動的にメモリを管理するヒープ領域
スタック領域
関数の引数などを一時的に保存する領域
仮想アドレス空間
各プロセスごと 64 KB 独立して与えられる
16 bit の仮想アドレスを MMU が 18 bit の物理アドレスにマッピング
アドレス変換
MMU は PAR と PDR という 2 つ 1 組の APR のレジスタを用いてマッピングを行う
PDP-11 は